//
//  VistaBarrios.m
//  ProyectoMoviTiendas
//
//  Created by Daniel Paez on 3/27/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "VistaBarrios.h"
#import "MoviTiendas.h"
#import "Barrio.h"
#import "VistaTiendas.h"

@interface VistaBarrios ()
{
    MoviTiendas * principal;
    NSMutableArray * selectedIndexes;
}

@end

@implementation VistaBarrios
@synthesize btnBuscar;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    principal = [MoviTiendas darInstancia];
    selectedIndexes = [[NSMutableArray alloc] init];
    btnBuscar.enabled = NO;
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
 
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)viewDidUnload
{
    [self setBtnBuscar:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Returns the number of sections.
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    int cuantas;
    
    if (section == 0) 
    {
        if(principal.cliente.barrio == nil)
        {
            cuantas = 0;
        }
        else 
        {
            cuantas = 2;
        }

    }
    else if (section == 1) 
    {
        cuantas = [principal.barrios count];
    }
    // Return the number of rows in the section.
    return cuantas;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    if([indexPath section] == 0)
    {
        if (indexPath.row == 0) 
        {
            cell.textLabel.text = principal.cliente.favoritas.nombre;
        }
        else 
        {
            cell.textLabel.text = principal.cliente.barrio.nombre;
        }
        
    }
    else if ([indexPath section] == 1)
    {
       
        Barrio * barrio = [principal.barrios objectAtIndex: [indexPath row]];
        if(![barrio.nombre isEqual:principal.cliente.barrio.nombre])
        {
            cell.textLabel.text = barrio.nombre;
        }
        else
        {
            cell.hidden = YES;

            cell.textLabel.text = @"Esto no debería aparecer";
        }
    }
    // Configure the cell...
    
    return cell;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/

/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/

/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/

/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell * celda = [tableView cellForRowAtIndexPath:indexPath];
    
    //Si no ha escogido el barrio
    if([celda accessoryType] == UITableViewCellAccessoryNone)
    {
        [celda setAccessoryType:UITableViewCellAccessoryCheckmark];
            
        //Si es de la sección de favoritas
        if([indexPath section] == 0)
        {
            if ([indexPath row] == 0)
            {
                [selectedIndexes addObject:principal.cliente.favoritas];
            }
            else 
            {
                [selectedIndexes addObject:principal.cliente.barrio];                
            }            
        }
        // Si es de la sección de todos los barrios
        else
        {
            Barrio * barrio = [principal.barrios objectAtIndex:[indexPath row]];
            [selectedIndexes addObject:barrio];
        }
    }
    // si ya había escogido el barrio
    else
    {
        [celda setAccessoryType: UITableViewCellAccessoryNone];
        
        //Si es de la sección de favoritas
        if([indexPath section] == 0)
        {
            if ([indexPath row] == 0)
            {
                Barrio * barrio = principal.cliente.favoritas;
                BOOL encontro = NO;
                
                
                for (int i = 0; i < [selectedIndexes count] || !encontro; i++) 
                {
                    Barrio* temp = [selectedIndexes objectAtIndex:i];
                    if([temp.nombre isEqual:barrio.nombre])
                    {
                        encontro = YES;
                        [selectedIndexes removeObjectAtIndex:i];
                    }
                }
            }
            else 
            {
                Barrio * barrio = principal.cliente.barrio;
                BOOL encontro = NO;
                
                
                for (int i = 0; i < [selectedIndexes count] || !encontro; i++) 
                {
                    Barrio* temp = [selectedIndexes objectAtIndex:i];
                    if([temp.nombre isEqual:barrio.nombre])
                    {
                        encontro = YES;
                        [selectedIndexes removeObjectAtIndex:i];
                    }
                }
            }            
        }
        
        // Si es de la sección de todos los barrios
        else 
        {
            Barrio * barrio = [principal.barrios objectAtIndex:[indexPath row]];
            BOOL encontro = NO;
            
            
            for (int i = 0; i < [selectedIndexes count] || !encontro; i++) 
            {
                Barrio* temp = [selectedIndexes objectAtIndex:i];
                if([temp.nombre isEqual:barrio.nombre])
                {
                    encontro = YES;
                    [selectedIndexes removeObjectAtIndex:i];
                }
            }
        }     
    }
    if (selectedIndexes.count)
    {
        btnBuscar.enabled = YES;
    }
    else {
        btnBuscar.enabled = NO;
    }
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    switch (section)
    {
        case 0:
            return @"Favoritas";
        case 1:
            return @"Todos los barrios";
        default:
            return nil;
    }
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    if ([indexPath section] == 1)
    {
        Barrio * barrio = [principal.barrios objectAtIndex: [indexPath row]];
        if([barrio.nombre isEqual:principal.cliente.barrio.nombre])
        {
            return 0.1;
        }
        
    }
    return 50;
    
}

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    
    NSMutableArray * barriosSeleccionados = [[NSMutableArray alloc] initWithCapacity:[selectedIndexes count]];
    
    if([selectedIndexes containsObject:principal.cliente.favoritas])
    {
        [barriosSeleccionados addObject:principal.cliente.favoritas];
    }
    if([selectedIndexes containsObject:principal.cliente.barrio])
    {
        [barriosSeleccionados addObject:principal.cliente.barrio];
    }
    for (Barrio * bar in principal.barrios)
    {
        if(![bar.nombre isEqualToString:principal.cliente.barrio.nombre])
        {
            if([selectedIndexes containsObject:bar])
            {
                [barriosSeleccionados addObject:bar];
            }
        }
    }
    VistaTiendas * vista = [segue destinationViewController];
    vista.barrios = barriosSeleccionados;    
}

@end
